﻿/*
 * zarray.h
 *
 *  Created on: 2015年4月3日
 *      Author: Fifi Lyu
 */

#ifndef INCLUDE_ZPSOE_ZALGORITHM_ZARRAY_H_
#define INCLUDE_ZPSOE_ZALGORITHM_ZARRAY_H_

#include "zpsoe/common.h"
#include <list>
#include <vector>

using std::list;
using std::vector;

namespace zpsoe {

namespace zalgorithm {

namespace zarray {

ZPSOE_SHARED_LIB_API bool find(const vector<string> &array, const string &element);
ZPSOE_SHARED_LIB_API bool find(const vector<uint16_t> &array, const uint16_t &element);
ZPSOE_SHARED_LIB_API bool find(const vector<uint32_t> &array, const uint32_t &element);
ZPSOE_SHARED_LIB_API bool find(const vector<uint64_t> &array, const uint64_t &element);
ZPSOE_SHARED_LIB_API bool find(const vector<double> &array, const double &element);

// 检查数组中是否存在指定元素，并返回iterator
ZPSOE_SHARED_LIB_API bool find(
    vector<string> &array,
    const string &element,
    vector<string>::iterator &it);

// 检查数组中是否存在指定元素，并返回iterator
ZPSOE_SHARED_LIB_API bool find(
    list<string> &array,
    const string &element,
    list<string>::iterator &it);

// 检查数组中是否存在指定元素
ZPSOE_SHARED_LIB_API bool exist(vector<string> &array, const string &element);

// 检查数组中是否存在指定元素
ZPSOE_SHARED_LIB_API bool exist(list<string> &array, const string &element);

// 删除数组中所有重复的元素
ZPSOE_SHARED_LIB_API void unique(vector<string> &array);
ZPSOE_SHARED_LIB_API void unique(vector<int64_t> &array);

} /* namespace zarray */

} /* namespace zalgorithm */

} /* namespace zpsoe */

#endif /* INCLUDE_ZPSOE_ZALGORITHM_ZARRAY_H_ */
